package com.priox.sigar.client.flt;

import com.priox.sigar.client.dto.AgrupacionDTO;
import com.priox.sigar.enums.ActivoInactivo;
import com.priox.sigar.enums.TipoCuenta;
import com.priox.sigar.enums.TipoCuentaOperacion;
import com.priox.sigar.enums.TipoVisible;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * User: Matrix
 * Date: 19/01/13
 */
public class CuentaContableFlt implements java.io.Serializable {


    private String codigo; // para filtros
    private Long usuarioId;
    private String cuentaContableId; // para busquedas exactas
    private String descripcion;
    private boolean seleccionado;

    private String creadoPor;
    private ActivoInactivo estado;
    private TipoVisible opcion;
    private String modificadoPor;
    private TipoCuenta tipoCuenta;
    private TipoCuentaOperacion tipoOperacion;
    private TipoCuenta tipoCuentaBusqueda;
    private Date fechaModificacion;
    private Date fechaCreacion;

    private List<String> notInCuentaList = new ArrayList<String>();

    private String agrupacionCodigo;
    private Long agrupacionId;
    private String agrupacionNombre;
    private String resumen;

    public Long getAgrupacionId() {
        return agrupacion==null?null:agrupacion.getAgrupacionId();
    }

    public void setAgrupacionId(Long agrupacionId) {
        agrupacion.setAgrupacionId(agrupacionId);
    }

    public String getAgrupacionNombre() {
        return agrupacion.getNombre();
    }

    public void setAgrupacionNombre(String agrupacionNombre) {
        agrupacion.setNombre(agrupacionNombre);
    }

    public String getResumen() {
        return codigo+"-"+descripcion;
    }

    public void setResumen(String resumen) {
        this.resumen = resumen;
    }

    private AgrupacionDTO agrupacion=new AgrupacionDTO();

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getModificadoPor() {
        return modificadoPor;
    }

    public void setModificadoPor(String modificadoPor) {
        this.modificadoPor = modificadoPor;
    }

    public Date getFechaModificacion() {
        return fechaModificacion;
    }

    public void setFechaModificacion(Date fechaModificacion) {
        this.fechaModificacion = fechaModificacion;
    }

    public Date getFechaCreacion() {
        return fechaCreacion;
    }

    public void setFechaCreacion(Date fechaCreacion) {
        this.fechaCreacion = fechaCreacion;
    }

    public String getCreadoPor() {
        return creadoPor;
    }

    public void setCreadoPor(String creadoPor) {
        this.creadoPor = creadoPor;
    }

    public ActivoInactivo getEstado() {
        return estado;
    }

    public void setEstado(ActivoInactivo estado) {
        this.estado = estado;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public AgrupacionDTO getAgrupacion() {
        return agrupacion;
    }

    public void setAgrupacion(AgrupacionDTO agrupacion) {
        this.agrupacion = agrupacion;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        CuentaContableFlt that = (CuentaContableFlt) o;

        if (codigo != null ? !codigo.equals(that.codigo) : that.codigo != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        return codigo != null ? codigo.hashCode() : 0;
    }

    public boolean isSeleccionado() {
        return seleccionado;
    }

    public void setSeleccionado(boolean seleccionado) {
        this.seleccionado = seleccionado;
    }

    public List<String> getNotInCuentaList() {
        return notInCuentaList;
    }

    public void setNotInCuentaList(List<String> notInCuentaList) {
        this.notInCuentaList = notInCuentaList;
    }

    public Long getUsuarioId() {
        return usuarioId;
    }

    public void setUsuarioId(Long usuarioId) {
        this.usuarioId = usuarioId;
    }

    public String getCuentaContableId() {
        return cuentaContableId;
    }

    public void setCuentaContableId(String cuentaContableId) {
        this.cuentaContableId = cuentaContableId;
    }

    public TipoVisible getOpcion() {
        return opcion;
    }

    public void setOpcion(TipoVisible opcion) {
        this.opcion = opcion;
    }

    public TipoCuenta getTipoCuenta() {
        return tipoCuenta;
    }

    public void setTipoCuenta(TipoCuenta tipoCuenta) {
        this.tipoCuenta = tipoCuenta;
    }

    /*@Override
    public String toString() {
        return "CuentaContableFlt{" +
                "usuarioId=" + usuarioId +
                ", cuentaContableId='" + cuentaContableId + '\'' +
                '}';
    }     */

    public TipoCuenta getTipoCuentaBusqueda() {
        return tipoCuentaBusqueda;
    }

    public void setTipoCuentaBusqueda(TipoCuenta tipoCuentaBusqueda) {
        this.tipoCuentaBusqueda = tipoCuentaBusqueda;
    }

    public String getAgrupacionCodigo() {
        return agrupacionCodigo;
    }

    public void setAgrupacionCodigo(String agrupacionCodigo) {
        this.agrupacionCodigo = agrupacionCodigo;
    }

    public TipoCuentaOperacion getTipoOperacion() {
        return tipoOperacion;
    }

    public void setTipoOperacion(TipoCuentaOperacion tipoOperacion) {
        this.tipoOperacion = tipoOperacion;
    }

    @java.lang.Override
    public java.lang.String toString() {
        return "CuentaContableFlt{" +
                "codigo='" + codigo + '\'' +
                ", usuarioId=" + usuarioId +
                ", cuentaContableId='" + cuentaContableId + '\'' +
                ", descripcion='" + descripcion + '\'' +
                ", seleccionado=" + seleccionado +
                ", creadoPor='" + creadoPor + '\'' +
                ", estado=" + estado +
                ", opcion=" + opcion +
                ", modificadoPor='" + modificadoPor + '\'' +
                ", tipoCuenta=" + tipoCuenta +
                ", tipoOperacion=" + tipoOperacion +
                ", tipoCuentaBusqueda=" + tipoCuentaBusqueda +
                ", fechaModificacion=" + fechaModificacion +
                ", fechaCreacion=" + fechaCreacion +
                ", notInCuentaList=" + notInCuentaList +
                ", agrupacionCodigo='" + agrupacionCodigo + '\'' +
                ", agrupacionId=" + agrupacionId +
                ", agrupacionNombre='" + agrupacionNombre + '\'' +
                ", resumen='" + resumen + '\'' +
                ", agrupacion=" + agrupacion +
                '}';
    }
}
